package com.uzai.console.service.merchant;

import com.uzai.console.dto.BaseDto;
import com.uzai.console.dto.login.RealNameVerificationDto;
import com.uzai.console.dto.login.PasswordUpdateDto;
import com.uzai.console.dto.login.SpecialOperateSendSmsDto;
import com.uzai.console.dto.module.merchant.GuideDto;
import com.uzai.console.dto.module.merchant.MerchantInfoDto;
import com.uzai.console.entity.Merchant;
import com.uzai.console.jsonvo.contract.ContractSignAddressJson;
import com.uzai.console.jsonvo.merbaseconfig.RealNameVerificationJson;
import com.uzai.console.vo.login.LoginVo;

/**
 * @author liuqi
 * @date 2021年08月13日 19:47
 */
public interface MerchantService {
    /**
     * 判断用户是否存在
     * @param mobile
     */
    Merchant getByMobile(String mobile);

    /**
     * 查询运营商通过运营商ID
     * @param merId
     */
    Merchant findByMerId(Long merId);

    /**
     * 修改账号信息
     * @param merchantDto
     */
    void updateLoginInfo(MerchantInfoDto merchantDto, LoginVo loginVo);

    /**
     * 敏感操作发送短信验证
     * @param specialOperateSendSmsDto
     * @return
     */
    void specialOperateSendSms(SpecialOperateSendSmsDto specialOperateSendSmsDto);

    /**
     * 修改功能向导
     * @param guideDto
     */
    void updateGuide(GuideDto guideDto);

    /**
     * 修改密码
     * @param
     * @return
     */
    void updatePassword(PasswordUpdateDto passwordUpdateDto, LoginVo loginVo);

    /**
     * 获取运营商存放会员信息缓存分段名称
     * @param merId
     * @return
     */
    String getMechantUserInfoEsName(String esName, Long merId);

    /**
     * 获取运营商存放其他ES索引缓存分段名称
     * @param merId
     * @return
     */
    String getMechantOtherEsIndexName(String esName, Long merId);

    /**
     * 运营商实名认证
     * @param
     * @return
     */
    void realNameVerification(RealNameVerificationDto realNameVerificationDto);

    /**
     * 获取运营商实名认证信息
     * @param
     * @return
     */
    RealNameVerificationJson getRealNameInfo(Long merId);

    /**
     * 运营商实名认证并签署
     *
     * @param realNameVerificationDto
     * @return
     */
    ContractSignAddressJson realNameVerificationAndSign(RealNameVerificationDto realNameVerificationDto);
}
